package com.ymm.platform.dao.mapper;

import com.ymm.platform.dao.entity.Complaints;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Description: 客服申诉mapper接口
 * @Author: Xuecheng Li
 * @CreateTime: 2022-08-12  23:53
 * @Version: 1.0.0
 */
public interface ComplaintsMapper {

    /**
     * 插入申诉数据
     * @Param: [complaints]
     * @return: void
     */
    Integer insertComplaints(Complaints complaints);

    /**
     * 根据申诉人id查询该用户所有申诉记录
     * @Param: [userId]
     * @return: java.util.List<com.ymm.platform.dao.entity.Complaints>
     */
    List<Complaints> selectComplaintsByComplainantId(@Param("complainantId") Long complainantId);

    /**
     * 更新指定申诉单状态
     * @Param: [complaintsId]
     * @return: java.lang.Integer
     */
    Integer updateComplaintsState(@Param("complaintsId") Long complaintsId, @Param("targetState") Integer targetState,
                                  @Param("updateTime") Date updateTime);

    /**
     * 根据申诉人id查询申诉状态
     * @Param: [complaintsId]
     * @return: java.lang.Integer
     */
    Integer selectComplaintsStateByComplainantId(@Param("complaintsId") Long complaintsId);

    /***
     * 根据申诉id获取指定申诉
     * @Param:
     * @return:
     */
    Complaints selectComplaintsByComplaintsId(@Param("complaintsId") Long complaintsId);

    /**
     * 根据订单id，查询指定申诉状态
     * @Param: [orderId]
     * @return: java.lang.Integer
     */
    Complaints selectComplaintsStateByOrderId(@Param("orderId") Long orderId);
    
    /**
     * 查询指定状态的所有申诉单详情
     * @Param: [complaintsState]
     * @return: List<com.ymm.platform.dao.entity.Complaints>
     */
    List<Complaints> selectComplaintsByComplaintsState(@Param("complaintsState") Integer complaintsState);

    /**
     * 更新指定申诉单的处理结果和状态
     * @Param: [complaintsId, handleDsc, complaintsState, Date updateTime]
     * @return: java.lang.Integer
     */
    Integer updateComplaintsStateAndHandleDsc(@Param("complaintsId") Long complaintsId,
                                              @Param("handleDsc") String handleDsc,
                                              @Param("complaintsState") Integer complaintsState,
                                              @Param("updateTime") Date updateTime);

}
